# *	匹配前一个字符出现0次或者无限次，即可有可无
# +	匹配前一个字符出现1次或者无限次，即至少有1次
# ?	匹配前一个字符出现1次或者0次，即要么有1次，要么没有
# {m}	匹配前一个字符出现m次
# {m,n}	匹配前一个字符出现从m到n次

import re

# *	匹配前一个字符出现0次或者无限次，即可有可无
# w 可以有0个或多个
match_obj = re.match("tw*o", "twwwwo")
if match_obj:
    print(match_obj.group())
else:
    print("匹配失败")

# *	匹配前一个字符出现0次或者无限次，即可有可无
# w（可以是任意字符） 可以有0个或多个
match_obj = re.match("t.*o", "tsftso")
if match_obj:
    print(match_obj.group())
else:
    print("匹配失败")

# +	匹配前一个字符出现1次或者无限次，即至少有1次
# w（可以是任意字符） 可以有0个或多个
match_obj = re.match("t.+o", "tw我o")
if match_obj:
    print(match_obj.group())
else:
    print("匹配失败")

# ?	匹配前一个字符出现1次或者0次，即要么有1次，要么没有
# 匹配http / https
match_obj = re.match("https?", "https")
if match_obj:
    print(match_obj.group())
else:
    print("匹配失败")

# {m}	匹配前一个字符出现m次
match_obj = re.match("ht{2}p", "https")
if match_obj:
    print(match_obj.group())
else:
    print("匹配失败")

# {m,n}	匹配前一个字符出现从m到n次
match_obj = re.match("ht{1,2}p", "https")
if match_obj:
    print(match_obj.group())
else:
    print("匹配失败")

# {m,}	n不指定，匹配前一个字符最少出现m次
match_obj = re.match("ht{1,}p", "htp")
if match_obj:
    print(match_obj.group())
else:
    print("匹配失败")

# {,n}	m不指定，匹配前一个字符最多出现n次
match_obj = re.match("ht{,3}p", "hp")
if match_obj:
    print(match_obj.group())
else:
    print("匹配失败")